Lava lamp is a personal project I've wanted to do since SideFX implemented fluids in vellum.
https://www.behance.net/gallery/194197537/Lava-Lamp-Simulation-Breakdown
Here you can find a little more detailed breakdown:
Breakdown:
1) raw sim. 2) secondary sim. 3) meshed vdb. 4) tiny advected particles. 5) render.
On the left you can see visualization of the @temperature attribute.
Floating and sinking are driven by @temperature like his:
force = set(0, @temperature, 0);
Secondary postprocess simulation. It's the second one in the video below the breakdown section begins. I used a softpin constraint with Increasing Stiffness Dropoff and a value of 0.2.